<?php

require_once dirname(__FILE__).'/../lib/articuloGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/articuloGeneratorHelper.class.php';

/**
 * articulo actions.
 *
 * @package    catalogo
 * @subpackage articulo
 * @author     idirocco
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class articuloActions extends autoArticuloActions
{
	
  public function executeBatchPublicar(sfWebRequest $request)
  {
    $ids = $request->getParameter('ids');

    $q = Doctrine_Query::create()
      ->from('Articulo a')
      ->whereIn('a.id', $ids);
 
    foreach ($q->execute() as $a)
    {
      $a->setPublicado(!$a->getPublicado());
      $a->save();
      if ($a->getPublicado())
        $this->notificarArticuloPublicado($a->getUsuario(), $a);      
    }
 
    $this->getUser()->setFlash('notice', 'Los articulos seleccionados han sido des/publicados correctamente.');
 
    $this->redirect('articulo');
  }
  
  public function executeBatchDestacar(sfWebRequest $request)
  {
    $ids = $request->getParameter('ids');

    $q = Doctrine_Query::create()
      ->from('Articulo a')
      ->whereIn('a.id', $ids);
 
    foreach ($q->execute() as $a)
    {
      $a->setDestacado(!$a->getDestacado());
      $a->setPublicado(1);
      if ($a->getPublicado())
          $this->notificarArticuloPublicado($a->getUsuario(), $a);
      $a->save();
    }
 
    $this->getUser()->setFlash('notice', 'Los articulos seleccionados han sido publicados correctamente.');
 
    $this->redirect('articulo');
  }
  
  public function executeList_publicar(sfWebRequest $request)
  {
    $a = $this->getRoute()->getObject();
    $a->setPublicado(!$a->getPublicado());
    $a->save();
 
    if ($a->getPublicado())
      $this->notificarArticuloPublicado($a->getUsuario(), $a);
        
    $this->getUser()->setFlash('notice', 'El articulo seleccionado ha sido des/publicado.');
 
    $this->redirect('articulo');
  }
    
  public function executeList_destacar(sfWebRequest $request)
  {
    $a = $this->getRoute()->getObject();
    $a->setPublicado(1);
    if ($a->getPublicado())
      $this->notificarArticuloPublicado($a->getUsuario(), $a);
    
    $a->setDestacado(!$a->getDestacado());
    $a->save();
    
    $this->getUser()->setFlash('notice', 'El articulo seleccionado ha sido no/destacado.');
 
    $this->redirect('articulo');
  }
  
  public function executeList_rechazar(sfWebRequest $request)
  {
  	$this->articulo = $this->getRoute()->getObject();
  }
  
  public function executeEnviar_rechazo(sfWebRequest $request)
  {
  	$a = Doctrine::getTable('Articulo')->find(array($request->getParameter('id')));
  	$a->setPublicado(0);
  	$a->setDestacado(0);
  	$a->save();
  	
  	$this->notificarArticuloRechazado($a->getUsuario(), $a, $request->getParameter('motivo'));
  	
    $this->getUser()->setFlash('notice', 'El articulo seleccionado ha sido rechazado.');
    $this->redirect('articulo');
  }

  protected function notificarArticuloPublicado($usuario, $articulo)
  {
    $email = $usuario->getEmail();
    $username = ($usuario->getNombre() == '' ? 
                    substr($email, 0, strpos($email, '@')) : 
                    $usuario->getNombre()
                );
    $href_ficha = $this->getController()
                                    ->genUrl(array('sf_route' => 'ficha_aviso', 
                                                   'sf_subject' => $articulo));
    $href_editar = $this->getController()
                                      ->genUrl(array('sf_route' => 'editar_articulo', 
                                                     'sf_subject' => $articulo));
                                      
    $enlace_ficha = '<a href="' . $_SERVER["SERVER_NAME"].'/'.substr($href_ficha, strpos($href_ficha, '/', 1)) . 
                    '">aquí</a>';    
    $enlace_editar = '<a href="' . $_SERVER["SERVER_NAME"].'/'.substr($href_editar, strpos($href_editar, '/', 1)). 
                     '">aquí</a>';

     $enlace_pqn = '<a href="' . $_SERVER["SERVER_NAME"] . '">PorQueNuevo</a>';    
    
    // send an email to the user
    $body = <<<EOF
Hola {$username},

Felicitaciones! Tu anuncio "{$articulo->getTitulo()}" ha sido publicado correctamente.

Podes ver tu anuncio haciendo click {$enlace_ficha}.
Podes modificar o eliminar tu anuncio haciendo click {$enlace_editar}.

Muchas suerte en tus ventas!

El equipo de {$enlace_pqn}.
EOF;

    $message = $this->getMailer()->compose();
    $message->setSubject('Felicitaciones! Se ha publicado tu anuncio "' . $articulo->getTitulo() . '"');
    $message->setTo($email);
    $message->setFrom(array('info@porquenuevo.com.ar' => 'PorQueNuevo'));
    $message->setBody(nl2br($body), 'text/html');
 
    $this->getMailer()->send($message);
  }
  
  protected function notificarArticuloRechazado($usuario, $articulo, $motivo)
  {
    $email = $usuario->getEmail();
    $username = ($usuario->getNombre() == '' ? 
                    substr($email, 0, strpos($email, '@')) : 
                    $usuario->getNombre()
                );

    $href_editar = $this->getController()
                                      ->genUrl(array('sf_route' => 'editar_articulo', 
                                                     'sf_subject' => $articulo));
                                      
    $enlace_editar = '<a href="' . $_SERVER["SERVER_NAME"].'/'.substr($href_editar, strpos($href_editar, '/', 1)). 
                     '">aquí</a>';
                
    $enlace_pqn = '<a href="' . $_SERVER["SERVER_NAME"] . '">PorQueNuevo</a>';    
    
    // send an email to the user
    $body = <<<EOF
Hola {$username},

Tu anuncio ha sido observado durante el proceso de revisión, por los siguientes motivos:

{$motivo}

Podes revisar y modificar tu anuncio haciendo click {$enlace_editar}.

Muchas gracias por elegirnos.
El equipo de {$enlace_pqn}.
EOF;

    $message = $this->getMailer()->compose();
    $message->setSubject('Tu anuncio "'.$articulo->getTitulo().'" ha sido rechazado');
    $message->setTo($email);
    $message->setFrom(array('info@porquenuevo.com.ar' => 'PorQueNuevo'));
    $message->setBody(nl2br($body), 'text/html');
 
    $this->getMailer()->send($message);
  }
  
}
